package com.atguigu.bigdata.scala.chapter04;

public class Scala04_Flow_Java {
    public static void main(String[] args) {

        // TODO HashMap极限值为11时，底层数据结构会发生变化

//         1. Map的扩容
//            HashMap => (8)16 => (9)32 => (10)64
//            Classes（100）=> Classes(4)(25)
//            数据存放的位置不均匀，会导致数据倾斜
//
//         2. 链表的数据为什么比较多
//            因为数据存放在一起，不均匀，所以都放置在同一个小格子中，组织起来就是一个链表
//
//         3. 二叉树对比链表的优势
//            查询效率提高
//
//         JDK1.8 => HashMap的底层数据结构
//         Node数组，长度默认为16
//         所谓的极限情况，应该将数据都放置在底层数据结构的一个小格子中
//         HashMap底层是依赖于Key的hash定位决定数据存放的位置
//         index = hash(key.hashCode) & (length - 1)
//
//         放置第8条数据时，底层数据结构并不会改变
//         放置第9条数据时，认为容量不够，所以需要扩容（32）
//         放置第10条数据时，认为容量不够，所以需要扩容（64）
//         放置第11条数据时，认为容量足够，但是依然效率比较低，所以需要转换结构，提高效率
//
//         如果在生产环境中，如果出现数据倾斜的话，扩大容量也是一种解决方案
//        Map<User, User> stringMap = new HashMap<>();
//        for ( int i = 1; i < 20; i++ ) {
//            stringMap.put(new User(), new User());
//            System.out.println(i);
//        }

//        int i = true ? 1 : 2;
//
//        int j ;
//        if (true)  j = 1; else j = 2;

        for ( int i = 1; i < 10; i++ ) {
//            if ( i == 5 ) {
//                continue;
//            }
//            System.out.println("i = " + i);
//            if ( i != 5 ) {
//                System.out.println("i = " + i);
//            }
            if ( i == 5 ) {
                break;
            }
            System.out.println("i = " + i);
        }


    }
}

class User {
    @Override
    public int hashCode() {
        return 1;
    }
}
